package com.showsu.editor.entity.remote;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * @version 1.0
 * @auth kevin
 * @date 2022/9/14 23:41:44
 **/
@NoArgsConstructor
@Data
public class AwemeVideoDetail {


//        private AdmireAuth admire_auth;
//        private Object anchors;
        private Author author;
        private long author_user_id;
//        private AwemeControlX aweme_control;
        private String aweme_id;
        private int aweme_type;
        private int bodydance_score;
        private String caption;
//        private Object challenge_position;
//        private Object chapter_list;
        private String city;
        private boolean cmt_swt;
        private int collect_stat;
        private long comment_gid;
//        private Object comment_list;
//        private CommentPermissionInfo comment_permission_info;
//        private Object commerce_config_data;
//        private CommerceInfo commerce_info;
//        private Object cover_labels;
        private int create_time;
        private String desc;
        private String desc_language;
        private AnchorInfo anchor_info;
//        private Descendants descendants;
//        private DiggLottie digg_lottie;
//        private Object dislike_dimension_list;
//        private String distance;
        private int distribute_type;
        private boolean duet_aggregate_in_music_tab;
        private int duration;
//        private Object geofencing_regions;
        private String group_id;
        private int guide_btn_type;
        private boolean has_vs_entry;
        private boolean have_dashboard;
//        private Object hybrid_label;
//        private ImageAlbumMusicInfo image_album_music_info;
//        private Object image_infos;
//        private Object image_list;
        private List<Images> images;
//        private Object img_bitrate;
        private ImpressionData impression_data;
//        private Object interaction_stickers;
        private boolean is_ads;
        private int is_collects_selected;
        private boolean is_duet_sing;
        private boolean is_fantasy;
        private boolean is_first_video;
        private int is_hash_tag;
        private boolean is_image_beat;
        private boolean is_in_scope;
        private boolean is_karaoke;
        private boolean is_life_item;
        private boolean is_pgcshow;
        private int is_preview;
        private boolean is_relieve;
        private int is_story;
        private int is_top;
        private boolean is_vr;
        private int item_comment_settings;
        private int item_duet;
        private int item_react;
        private int item_share;
        private int item_stitch;
        private String preview_title;
        private SeoInfo seo_info;
//        private Object label_top_text;
//        private Object long_video;
//        private String misc_info;
//        private Music music;
//        private int nearby_level;
//        private boolean need_vs_entry;
//        private Object nickname_position;
//        private Object origin_comment_ids;
//        private Object original_images;
//        private PhotoSearchEntrance photo_search_entrance;
//        private PoiBiz poi_biz;
//        private PoiPatchInfo poi_patch_info;
//        private Object position;
//        private boolean prevent_download;
//        private int rate;
//        private String region;
//        private Object relation_labels;
//        private boolean report_action;
//        private RiskInfos risk_infos;
//        private SearchImprXX search_impr;
//        private SeriesPaidInfo series_paid_info;
        private ShareInfoX share_info;
        private String share_url;
//        private boolean should_open_ad_report;
//        private ShowFollowButton show_follow_button;
//        private Object social_tag_list;
//        private String sort_label;
//        private Object standard_bar_info_list;
        private Statistics statistics;
        private Status status;
//        private int story_ttl;
//        private Object uniqid_position;
//        private int user_digged;
        private Video video;
        private SuggestWords suggest_words;
//        private VideoControl video_control;
//        private Object video_labels;
//        private int vr_type;
//        private boolean with_promotional_music;
//        private boolean without_watermark;
//        private XiguaTask xigua_task;
//        private List<ChaList> cha_list;
//        private List<?> geofencing;
//        private List<?> promotions;
        private List<TextExtra> text_extra;
        private List<VideoTag> video_tag;
    /**
     * animatedImageInfo
     */
    private AnimatedImageInfoDTO animated_image_info;

    /**
     * AnimatedImageInfoDTO
     */
    @NoArgsConstructor
    @Data
    public static class AnimatedImageInfoDTO {
        /**
         * effect
         */
        @SerializedName("effect")
        private Integer effect;
        /**
         * type
         */
        @SerializedName("type")
        private Integer type;
    }
//        private List<?> video_text;

        @Data
        public class SeoInfo implements Serializable {
            private String ocr_content;
        }

        @Data
        public class SuggestWords implements Serializable {
            private List<SuggestWord> suggest_words;
            @Data
            public class SuggestWord implements Serializable {
//                private String hint_text;
//                private String icon_url;
//                private String scene;
                private List<Word> words;
                @Data
                public class Word implements Serializable {
//                    private String info;
                    private String word;
//                    private String word_id;
                }
            }
        }

        @Data
        public class AdmireAuth implements Serializable {
            private int admire_button;
            private int is_admire;
            private int is_show_admire_button;
            private int is_show_admire_tab;
        }

        @Data
        public class Author implements Serializable {
//            private boolean accept_private_policy;
//            private String account_region;
//            private Object ad_cover_url;
//            private int apple_account;
//            private int authority_status;
//            private Author.Avatar168x168 avatar_168x168;
//            private Author.Avatar300x300 avatar_300x300;
//            private Author.AvatarLarger avatar_larger;
//            private Author.AvatarMedium avatar_medium;
//            private Author.AvatarThumb avatar_thumb;
//            private String avatar_uri;
//            private Author.AwemeControl aweme_control;
//            private int aweme_count;
//            private Object ban_user_functions;
//            private String bind_phone;
//            private String birthday;
//            private Object can_set_geofencing;
//            private Object card_entries;
//            private Object card_entries_not_display;
//            private Object card_sort_priority;
//            private Object cf_list;
//            private Object cha_list;
//            private int close_friend_type;
//            private int comment_filter_status;
//            private int comment_setting;
//            private int commerce_user_level;
//            private int constellation;
//            private int contacts_status;
//            private int create_time;
//            private String custom_verify;
//            private String cv_level;
//            private Object display_info;
//            private int download_prompt_ts;
//            private int download_setting;
//            private int duet_setting;
//            private boolean enable_nearby_visible;
//            private Object endorsement_info_list;
//            private String enterprise_verify_reason;
//            private int favoriting_count;
//            private int fb_expire_time;
//            private int follow_status;
//            private int follower_count;
//            private Object follower_list_secondary_information_struct;
//            private int follower_request_status;
//            private int follower_status;
//            private Object followers_detail;
//            private int following_count;
//            private int gender;
//            private String google_account;
//            private boolean has_email;
//            private boolean has_facebook_token;
//            private boolean has_insights;
//            private boolean has_orders;
//            private boolean has_twitter_token;
//            private boolean has_unread_story;
//            private boolean has_youtube_token;
//            private boolean hide_location;
//            private boolean hide_search;
//            private Object homepage_bottom_toast;
//            private Object im_role_ids;
//            private String ins_id;
//            private Object interest_tags;
//            private boolean is_ad_fake;
//            private boolean is_binded_weibo;
//            private boolean is_block;
//            private boolean is_blocked_v2;
//            private boolean is_blocking_v2;
//            private int is_cf;
//            private boolean is_discipline_member;
//            private boolean is_gov_media_vip;
//            private boolean is_mix_user;
//            private boolean is_not_show;
//            private boolean is_phone_binded;
//            private boolean is_star;
//            private boolean is_verified;
//            private Object item_list;
//            private int ky_only_predict;
//            private String language;
//            private Object link_item_list;
//            private int live_agreement;
//            private int live_agreement_time;
//            private boolean live_commerce;
//            private int live_status;
//            private int live_verify;
//            private String location;
//            private int max_follower_count;
//            private Object need_points;
//            private int need_recommend;
//            private int neiguang_shield;
//            private int new_friend_type;
//            private Object new_story_cover;
            private String nickname;
//            private Object not_seen_item_id_list;
//            private Object offline_info_list;
//            private Object personal_tag_list;
//            private Object platform_sync_info;
//            private boolean prevent_download;
//            private int react_setting;
//            private int reflow_page_gid;
//            private int reflow_page_uid;
//            private String region;
//            private Object relative_users;
//            private String risk_notice_text;
//            private int room_id;
//            private int school_category;
//            private String school_id;
//            private String school_name;
//            private String school_poi_id;
//            private int school_type;
//            private Author.SearchImpr search_impr;
            private String sec_uid;
//            private int secret;
//            private Author.ShareInfo share_info;
//            private String share_qrcode_uri;
//            private int shield_comment_notice;
//            private int shield_digg_notice;
//            private int shield_follow_notice;
            private String short_id;
//            private boolean show_image_bubble;
//            private boolean show_nearby_active;
            private String signature;
//            private int signature_display_lines;
//            private Object signature_extra;
//            private int special_lock;
//            private int status;
//            private int stitch_setting;
//            private int story_count;
//            private boolean story_open;
//            private int sync_to_toutiao;
//            private Object text_extra;
            private Integer total_favorited;
//            private int tw_expire_time;
//            private String twitter_id;
//            private String twitter_name;
//            private Object type_label;
//            private String uid;
//            private String unique_id;
//            private int unique_id_modify_time;
//            private int user_age;
//            private boolean user_canceled;
//            private int user_mode;
//            private int user_not_see;
//            private int user_not_show;
//            private int user_period;
//            private Object user_permissions;
//            private int user_rate;
//            private Object user_tags;
//            private int verification_type;
//            private String verify_info;
//            private Author.VideoIcon video_icon;
//            private String weibo_name;
//            private String weibo_schema;
//            private String weibo_url;
//            private String weibo_verify;
//            private Object white_cover_url;
//            private boolean with_commerce_entry;
//            private boolean with_dou_entry;
//            private boolean with_fusion_shop_entry;
//            private boolean with_shop_entry;
//            private String youtube_channel_id;
//            private String youtube_channel_title;
//            private int youtube_expire_time;
//            private List<Author.CoverUrl> cover_url;
//            private List<?> geofencing;

            @Data
            public class Avatar168x168 implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class Avatar300x300 implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class AvatarLarger implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class AvatarMedium implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class AvatarThumb implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class AwemeControl implements Serializable {
                private boolean can_comment;
                private boolean can_forward;
                private boolean can_share;
                private boolean can_show_comment;
            }

            @Data
            public class SearchImpr implements Serializable {
                private String entity_id;
            }

            @Data
            public class ShareInfo implements Serializable {
                private String share_desc;
                private String share_desc_info;
                private ShareQrcodeUrl share_qrcode_url;
                private String share_title;
                private String share_title_myself;
                private String share_title_other;
                private String share_url;
                private String share_weibo_desc;

                @Data
                public class ShareQrcodeUrl implements Serializable {
                    private int height;
                    private String uri;
                    private int width;
                    private List<String> url_list;
                }
            }

            @Data
            public class VideoIcon implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<?> url_list;
            }

            @Data
            public class CoverUrl implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }
        }

        @Data
        public class AwemeControlX implements Serializable {
            private boolean can_comment;
            private boolean can_forward;
            private boolean can_share;
            private boolean can_show_comment;
        }

        @Data
        public class CommentPermissionInfo implements Serializable {
            private boolean can_comment;
            private int comment_permission_status;
            private boolean item_detail_entry;
            private boolean press_entry;
            private boolean toast_guide;
        }

        @Data
        public class CommerceInfo implements Serializable {
            private int ad_type;
            private boolean is_ad;
        }

        @Data
        public class Descendants implements Serializable {
            private String notify_msg;
            private List<String> platforms;
        }

        @Data
        public class DiggLottie implements Serializable {
            private int can_bomb;
            private String lottie_id;
        }

        @Data
        public class ImageAlbumMusicInfo implements Serializable {
            private int begin_time;
            private int end_time;
            private int volume;
        }

        @Data
        public class ImpressionData implements Serializable {
            private Object similar_id_list_a;
            private Object similar_id_list_b;
            private List<Long> group_id_list_a;
            private List<Long> group_id_list_b;
        }

        @Data
        public class Music implements Serializable {
            private String album;
            private Object artist_user_infos;
            private int audition_duration;
            private String author;
            private boolean author_deleted;
            private Object author_position;
            private int author_status;
            private AvatarLarge avatar_large;
            private AvatarMediumX avatar_medium;
            private AvatarThumbX avatar_thumb;
            private int binded_challenge_id;
            private boolean can_background_play;
            private int collect_stat;
            private CoverHd cover_hd;
            private CoverLarge cover_large;
            private CoverMedium cover_medium;
            private CoverThumb cover_thumb;
            private boolean dmv_auto_show;
            private int dsp_status;
            private int duration;
            private int end_time;
            private String extra;
            private long id;
            private String id_str;
            private boolean is_audio_url_with_cookie;
            private boolean is_commerce_music;
            private boolean is_del_video;
            private boolean is_matched_metadata;
            private boolean is_original;
            private boolean is_original_sound;
            private boolean is_pgc;
            private boolean is_restricted;
            private boolean is_video_self_see;
            private LunaInfo luna_info;
            private Object lyric_short_position;
            private String mid;
            private Object music_chart_ranks;
            private int music_status;
            private Object musician_user_infos;
            private boolean mute_share;
            private String offline_desc;
            private String owner_handle;
            private String owner_id;
            private String owner_nickname;
            private int pgc_music_type;
            private PlayUrl play_url;
            private Object position;
            private boolean prevent_download;
            private int prevent_item_download_status;
            private int preview_end_time;
            private int preview_start_time;
            private int reason_type;
            private boolean redirect;
            private String schema_url;
            private SearchImprX search_impr;
            private String sec_uid;
            private int shoot_duration;
            private int source_platform;
            private int start_time;
            private int status;
            private Object tag_list;
            private String title;
            private Object unshelve_countries;
            private int user_count;
            private int video_duration;
            private List<?> artists;
            private List<?> external_song_info;

            @Data
            public class AvatarLarge implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class AvatarMediumX implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class AvatarThumbX implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class CoverHd implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class CoverLarge implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class CoverMedium implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class CoverThumb implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class LunaInfo implements Serializable {
                private boolean is_luna_user;
            }

            @Data
            public class PlayUrl implements Serializable {
                private int height;
                private String uri;
                private String url_key;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class SearchImprX implements Serializable {
                private String entity_id;
            }
        }

        @Data
        public class PhotoSearchEntrance implements Serializable {
        }

        @Data
        public class PoiBiz implements Serializable {
        }

        @Data
        public class PoiPatchInfo implements Serializable {
            private String extra;
            private int item_patch_poi_prompt_mark;
        }

        @Data
        public class RiskInfos implements Serializable {
            private String content;
            private boolean risk_sink;
            private int type;
            private boolean vote;
            private boolean warn;
        }

        @Data
        public class SearchImprXX implements Serializable {
            private String entity_id;
            private String entity_type;
        }

        @Data
        public class SeriesPaidInfo implements Serializable {
            private int item_price;
            private int series_paid_status;
        }

        @Data
        public class ShareInfoX implements Serializable {
            private String share_desc;
            private String share_desc_info;
            private String share_link_desc;
            private String share_url;
        }

        @Data
        public class ShowFollowButton implements Serializable {
        }

        @Data
        public class Statistics implements Serializable {
            private int admire_count;
            private String aweme_id;
            private int collect_count;
            private int comment_count;
            private String digest;
            private int digg_count;
            private int download_count;
            private int exposure_count;
            private int forward_count;
            private int live_watch_count;
            private int lose_comment_count;
            private int lose_count;
            private int play_count;
            private int share_count;
            private int whatsapp_share_count;
        }

        @Data
        public class Status implements Serializable {
            private boolean allow_comment;
            private boolean allow_share;
            private AwemeEditInfo aweme_edit_info;
            private String aweme_id;
            private int dont_share_status;
            private int download_status;
            private boolean in_reviewing;
            private boolean is_delete;
            private boolean is_private;
            private boolean is_prohibited;
            private int listen_video_status;
            private int part_see;
            private int private_status;
            private ReviewResult review_result;
            private int reviewed;
            private boolean self_see;
            private int video_hide_search;
            private boolean with_fusion_goods;
            private Boolean with_goods;

            @Data
            public class AwemeEditInfo implements Serializable {
                private int button_status;
                private String button_toast;
            }

            @Data
            public class ReviewResult implements Serializable {
                private int review_status;
            }
        }

        @Data
        public class Images implements Serializable {
//            /**
//             * clipType
//             */
//            @SerializedName("clip_type")
//            private Integer clipType;
//            /**
//             * downloadUrlList
//             */
//            @SerializedName("download_url_list")
//            private List<String> downloadUrlList;
//            /**
//             * height
//             */
//            @SerializedName("height")
//            private Integer height;
//            /**
//             * index
//             */
//            @SerializedName("index")
//            private Integer index;
//            /**
//             * uri
//             */
//            @SerializedName("uri")
//            private String uri;
            /**
             * urlList
             */
            @SerializedName("url_list")
            private List<String> urlList;
            /**
             * video
             */
            @SerializedName("video")
            private VideoDTO video;
//            /**
//             * width
//             */
//            @SerializedName("width")
//            private Integer width;

            /**
             * VideoDTO
             */
            @Data
            public class VideoDTO {
//                /**
//                 * bigThumbs
//                 */
//                @SerializedName("big_thumbs")
//                private List<?> bigThumbs;
//                /**
//                 * bitRate
//                 */
//                @SerializedName("bit_rate")
//                private List<VideoDTO.BitRateDTO> bitRate;
//                /**
//                 * bitRateAudio
//                 */
//                @SerializedName("bit_rate_audio")
//                private Object bitRateAudio;
//                /**
//                 * cdnUrlExpired
//                 */
//                @SerializedName("cdn_url_expired")
//                private Integer cdnUrlExpired;
//                /**
//                 * cover
//                 */
//                @SerializedName("cover")
//                private VideoDTO.CoverDTO cover;
//                /**
//                 * downloadAddr
//                 */
//                @SerializedName("download_addr")
//                private VideoDTO.DownloadAddrDTO downloadAddr;
//                /**
//                 * duration
//                 */
//                @SerializedName("duration")
//                private Integer duration;
//                /**
//                 * hasWatermark
//                 */
//                @SerializedName("has_watermark")
//                private Boolean hasWatermark;
//                /**
//                 * height
//                 */
//                @SerializedName("height")
//                private Integer height;
//                /**
//                 * isBytevc1
//                 */
//                @SerializedName("is_bytevc1")
//                private Integer isBytevc1;
//                /**
//                 * isCallback
//                 */
//                @SerializedName("is_callback")
//                private Boolean isCallback;
//                /**
//                 * isH265
//                 */
//                @SerializedName("is_h265")
//                private Integer isH265;
//                /**
//                 * isSourceHdr
//                 */
//                @SerializedName("is_source_HDR")
//                private Integer isSourceHdr;
//                /**
//                 * meta
//                 */
//                @SerializedName("meta")
//                private String meta;
//                /**
//                 * needSetToken
//                 */
//                @SerializedName("need_set_token")
//                private Boolean needSetToken;
//                /**
//                 * originCover
//                 */
//                @SerializedName("origin_cover")
//                private VideoDTO.OriginCoverDTO originCover;
                /**
                 * playAddr
                 */
                @SerializedName("play_addr")
                private PlayAddrLowbrDTO playAddr;
                /**
                 * playAddrH264
                 */
                @SerializedName("play_addr_h264")
                private PlayAddrLowbrDTO playAddrH264;
                /**
                 * playAddrH265
                 */
                @SerializedName("play_addr_h265")
                private PlayAddrLowbrDTO playAddrH265;

                /**
                 * playAddrH265
                 */
                @SerializedName("play_addr_265")
                private PlayAddrLowbrDTO playAddr265;
                /**
                 * playAddrLowbr
                 */
                @SerializedName("play_addr_lowbr")
                private PlayAddrLowbrDTO playAddrLowbr;
//                /**
//                 * ratio
//                 */
//                @SerializedName("ratio")
//                private String ratio;
//                /**
//                 * tags
//                 */
//                @SerializedName("tags")
//                private Object tags;
//                /**
//                 * width
//                 */
//                @SerializedName("width")
//                private Integer width;

                /**
                 * CoverDTO
                 */
                @Data
                public class CoverDTO {
                    /**
                     * height
                     */
                    @SerializedName("height")
                    private Integer height;
                    /**
                     * uri
                     */
                    @SerializedName("uri")
                    private String uri;
                    /**
                     * urlList
                     */
                    @SerializedName("url_list")
                    private List<String> urlList;
                    /**
                     * width
                     */
                    @SerializedName("width")
                    private Integer width;
                }

                /**
                 * DownloadAddrDTO
                 */
                @Data
                public class DownloadAddrDTO {
                    /**
                     * dataSize
                     */
                    @SerializedName("data_size")
                    private Integer dataSize;
                    /**
                     * height
                     */
                    @SerializedName("height")
                    private Integer height;
                    /**
                     * uri
                     */
                    @SerializedName("uri")
                    private String uri;
                    /**
                     * urlList
                     */
                    @SerializedName("url_list")
                    private List<String> urlList;
                    /**
                     * width
                     */
                    @SerializedName("width")
                    private Integer width;
                }

                /**
                 * OriginCoverDTO
                 */
                @Data
                public class OriginCoverDTO {
                    /**
                     * height
                     */
                    @SerializedName("height")
                    private Integer height;
                    /**
                     * uri
                     */
                    @SerializedName("uri")
                    private String uri;
                    /**
                     * urlList
                     */
                    @SerializedName("url_list")
                    private List<?> urlList;
                    /**
                     * width
                     */
                    @SerializedName("width")
                    private Integer width;
                }

                /**
                 * PlayAddrDTO
                 */
                @Data
                public class PlayAddrDTO {
                    /**
                     * dataSize
                     */
                    @SerializedName("data_size")
                    private Integer dataSize;
                    /**
                     * fileCs
                     */
                    @SerializedName("file_cs")
                    private String fileCs;
                    /**
                     * fileHash
                     */
                    @SerializedName("file_hash")
                    private String fileHash;
                    /**
                     * height
                     */
                    @SerializedName("height")
                    private Integer height;
                    /**
                     * uri
                     */
                    @SerializedName("uri")
                    private String uri;
                    /**
                     * urlKey
                     */
                    @SerializedName("url_key")
                    private String urlKey;
                    /**
                     * urlList
                     */
                    @SerializedName("url_list")
                    private List<String> urlList;
                    /**
                     * width
                     */
                    @SerializedName("width")
                    private Integer width;
                }

                /**
                 * PlayAddrH264DTO
                 */
                @Data
                public class PlayAddrH264DTO {
                    /**
                     * dataSize
                     */
                    @SerializedName("data_size")
                    private Integer dataSize;
                    /**
                     * fileCs
                     */
                    @SerializedName("file_cs")
                    private String fileCs;
                    /**
                     * fileHash
                     */
                    @SerializedName("file_hash")
                    private String fileHash;
                    /**
                     * height
                     */
                    @SerializedName("height")
                    private Integer height;
                    /**
                     * uri
                     */
                    @SerializedName("uri")
                    private String uri;
                    /**
                     * urlKey
                     */
                    @SerializedName("url_key")
                    private String urlKey;
                    /**
                     * urlList
                     */
                    @SerializedName("url_list")
                    private List<String> urlList;
                    /**
                     * width
                     */
                    @SerializedName("width")
                    private Integer width;
                }

                /**
                 * PlayAddrLowbrDTO
                 */
                @Data
                public class PlayAddrLowbrDTO {
//                    /**
//                     * dataSize
//                     */
//                    @SerializedName("data_size")
//                    private Integer dataSize;
//                    /**
//                     * fileCs
//                     */
//                    @SerializedName("file_cs")
//                    private String fileCs;
//                    /**
//                     * fileHash
//                     */
//                    @SerializedName("file_hash")
//                    private String fileHash;
//                    /**
//                     * height
//                     */
//                    @SerializedName("height")
//                    private Integer height;
//                    /**
//                     * uri
//                     */
//                    @SerializedName("uri")
//                    private String uri;
//                    /**
//                     * urlKey
//                     */
//                    @SerializedName("url_key")
//                    private String urlKey;
                    /**
                     * urlList
                     */
                    @SerializedName("url_list")
                    private List<String> urlList;
//                    /**
//                     * width
//                     */
//                    @SerializedName("width")
//                    private Integer width;
                }

                /**
                 * BitRateDTO
                 */
                @Data
                public class BitRateDTO {
                    /**
                     * fps
                     */
                    @SerializedName("FPS")
                    private Integer fps;
                    /**
                     * hdrBit
                     */
                    @SerializedName("HDR_bit")
                    private String hdrBit;
                    /**
                     * hdrType
                     */
                    @SerializedName("HDR_type")
                    private String hdrType;
                    /**
                     * bitRate
                     */
                    @SerializedName("bit_rate")
                    private Integer bitRate;
                    /**
                     * format
                     */
                    @SerializedName("format")
                    private String format;
                    /**
                     * gearName
                     */
                    @SerializedName("gear_name")
                    private String gearName;
                    /**
                     * isBytevc1
                     */
                    @SerializedName("is_bytevc1")
                    private Integer isBytevc1;
                    /**
                     * isH265
                     */
                    @SerializedName("is_h265")
                    private Integer isH265;
                    /**
                     * playAddr
                     */
                    @SerializedName("play_addr")
                    private PlayAddrDTO playAddr;
                    /**
                     * qualityType
                     */
                    @SerializedName("quality_type")
                    private Integer qualityType;
                    /**
                     * videoExtra
                     */
                    @SerializedName("video_extra")
                    private String videoExtra;

                    /**
                     * PlayAddrDTO
                     */
                    @Data
                    public class PlayAddrDTO {
                        /**
                         * dataSize
                         */
                        @SerializedName("data_size")
                        private Integer dataSize;
                        /**
                         * fileCs
                         */
                        @SerializedName("file_cs")
                        private String fileCs;
                        /**
                         * fileHash
                         */
                        @SerializedName("file_hash")
                        private String fileHash;
                        /**
                         * height
                         */
                        @SerializedName("height")
                        private Integer height;
                        /**
                         * uri
                         */
                        @SerializedName("uri")
                        private String uri;
                        /**
                         * urlKey
                         */
                        @SerializedName("url_key")
                        private String urlKey;
                        /**
                         * urlList
                         */
                        @SerializedName("url_list")
                        private List<String> urlList;
                        /**
                         * width
                         */
                        @SerializedName("width")
                        private Integer width;
                    }
                }
            }
        }

        @Data
        public class Video implements Serializable {
            private int horizontal_type;
//            private Video.AnimatedCover animated_cover;
//            private Object big_thumbs;
//            private int cdn_url_expired;
            private Cover cover;
//            private Video.CoverOriginalScale cover_original_scale;
//            private Video.DownloadAddr download_addr;
//            private Video.DownloadSuffixLogoAddr download_suffix_logo_addr;
            private int duration;
//            private Video.DynamicCover dynamic_cover;
//            private boolean has_download_suffix_logo_addr;
//            private boolean has_watermark;
//            private int height;
//            private int is_bytevc1;
//            private boolean is_callback;
//            private int is_h265;
//            private int is_source_HDR;
//            private String meta;
//            private boolean need_set_token;
//            private Video.OriginCover origin_cover;
            private PlayAddrLowbr play_addr;
            private PlayAddrLowbr play_addr_h264;
            private PlayAddrLowbr play_addr_h265;
            private PlayAddrLowbr play_addr_265;
            private PlayAddrLowbr play_addr_lowbr;
//            private String ratio;
//            private Object tags;
//            private boolean use__cover;
//            private int width;
//            private List<Video.BitRate> bit_rate;

            @Data
            public class AnimatedCover implements Serializable {
                private String uri;
                private List<String> url_list;
            }

            @Data
            public class Cover implements Serializable {
//                private int height;
//                private String uri;
//                private int width;
                private List<String> url_list;
            }

            @Data
            public class CoverOriginalScale implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class DownloadAddr implements Serializable {
                private int data_size;
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class DownloadSuffixLogoAddr implements Serializable {
                private int data_size;
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class DynamicCover implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class OriginCover implements Serializable {
                private int height;
                private String uri;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class PlayAddr implements Serializable {
                private int data_size;
                private String file_cs;
                private String file_hash;
                private int height;
                private String uri;
                private String url_key;
                private int width;
                private List<String> url_list;
            }

            @Data
            public class PlayAddrLowbr implements Serializable {
//                private int data_size;
//                private String file_cs;
//                private String file_hash;
//                private int height;
//                private String uri;
//                private String url_key;
//                private int width;
                private List<String> url_list;
            }

            @Data
            public class BitRate implements Serializable {
                @SerializedName("FPS")
                private int fps;
                private String HDR_bit;
                private String HDR_type;
                private int bit_rate;
                private String gear_name;
                private int is_bytevc1;
                private int is_h265;
                private PlayAddrX play_addr;
                private int quality_type;

                @Data
                public class PlayAddrX implements Serializable {
                    private int data_size;
                    private String file_cs;
                    private String file_hash;
                    private int height;
                    private String uri;
                    private String url_key;
                    private int width;
                    private List<String> url_list;
                }
            }
        }

        @Data
        public class VideoControl implements Serializable {
            private boolean allow_douplus;
            private boolean allow_download;
            private boolean allow_duet;
            private boolean allow_dynamic_wallpaper;
            private boolean allow_music;
            private boolean allow_react;
            private boolean allow_share;
            private boolean allow_stitch;
            private boolean download_ignore_visibility;
            private DownloadInfo download_info;
            private int draft_progress_bar;
            private boolean duet_ignore_visibility;
            private DuetInfo duet_info;
            private int prevent_download_type;
            private boolean share_grayed;
            private boolean share_ignore_visibility;
            private int share_type;
            private int show_progress_bar;
            private int timer_status;

            @Data
            public class DownloadInfo implements Serializable {
                private FailInfo fail_info;
                private int level;

                @Data
                public class FailInfo implements Serializable {
                    private int code;
                    private String msg;
                    private String reason;
                }
            }

            @Data
            public class DuetInfo implements Serializable {
                private int level;
            }
        }

        @Data
        public class XiguaTask implements Serializable {
            private boolean is_xigua_task;
        }

        @Data
        public class ChaList implements Serializable {
            private AuthorX author;
            private Object banner_list;
            private Object cha_attrs;
            private String cha_name;
            private String cid;
            private int collect_stat;
            private String desc;
            private ExtraAttr extra_attr;
            private String hashtag_profile;
            private int is_challenge;
            private boolean is_commerce;
            private boolean is_pgcshow;
            private String schema;
            private SearchImprXXX search_impr;
            private ShareInfoXX share_info;
            private Object show_items;
            private int sub_type;
            private int type;
            private int user_count;
            private int view_count;
            private List<?> connect_music;

            @Data
            public class AuthorX implements Serializable {
                private Object ad_cover_url;
                private Object ban_user_functions;
                private Object can_set_geofencing;
                private Object card_entries;
                private Object card_entries_not_display;
                private Object card_sort_priority;
                private Object cf_list;
                private Object cha_list;
                private Object cover_url;
                private Object display_info;
                private Object endorsement_info_list;
                private Object follower_list_secondary_information_struct;
                private Object followers_detail;
                private Object geofencing;
                private Object homepage_bottom_toast;
                private Object im_role_ids;
                private Object interest_tags;
                private Object item_list;
                private Object link_item_list;
                private Object need_points;
                private Object new_story_cover;
                private Object not_seen_item_id_list;
                private Object offline_info_list;
                private Object personal_tag_list;
                private Object platform_sync_info;
                private Object relative_users;
                private Object signature_extra;
                private Object text_extra;
                private Object type_label;
                private Object user_permissions;
                private Object user_tags;
                private Object white_cover_url;
            }

            @Data
            public class ExtraAttr implements Serializable {
                private boolean is_live;
            }

            @Data
            public class SearchImprXXX implements Serializable {
                private String entity_id;
            }

            @Data
            public class ShareInfoXX implements Serializable {
                private int bool_persist;
                private String share_desc;
                private String share_desc_info;
                private String share_quote;
                private String share_signature_desc;
                private String share_signature_url;
                private String share_title;
                private String share_title_myself;
                private String share_title_other;
                private String share_url;
                private String share_weibo_desc;
            }
        }

        @Data
        public class TextExtra implements Serializable {
//            private int end;
//            private String hashtag_id;
            private String hashtag_name;
//            private boolean is_commerce;
//            private int start;
//            private int type;
        }

        @Data
        public class VideoTag implements Serializable {
            private int level;
            private String tag_id;
            private String tag_name;
        }

        @Data
        public class AnchorInfo implements Serializable {
            private String extra;
            private Boolean hasProduct;
        }
}
